package settings

import (
	"github.com/spf13/viper"
	"log"
)

// Settings 项目总配置
var Settings struct {
	Mode          string                 `mapstructure:"mode"`       // 当前模式，dev：开发，releases：上线
	Port          string                 `mapstructure:"port"`       // 服务端口
	Host          string                 `mapstructure:"host"`       // 服务域名
	StartTime     string                 `mapstructure:"start_time"` // 项目开始时间
	NodeId        int64                  `mapstructure:"node_id"`    // 节点
	*MySQLConfig  `mapstructure:"mysql"` // 数据库配置
	*RedisConfig  `mapstructure:"redis"` // 缓存配置
	*ZapLogConfig `mapstructure:"log"`   // 日志配置
}

// InitProductionConfig 初始化项目配置
func InitProductionConfig() {
	viper.AddConfigPath("./")
	viper.SetConfigName("config")
	viper.SetConfigType("yaml")
	if err := viper.ReadInConfig(); err != nil {
		if _, ok := err.(viper.ConfigFileNotFoundError); ok {
			log.Fatalln("config file not found")
		} else {
			log.Fatalf("read config file failed. error: %v\n", err)
		}
	}
	if err := viper.Unmarshal(&Settings); err != nil {
		log.Fatalf("unmarshal config failed. error: %v\n", err)
	}
}
